package com.ic.alarm.controller;

import IC.common.core.domain.R;


import com.ic.alarm.domain.WarnData;
import com.ic.alarm.service.WebSockertService;
import com.ic.alarm.ws.WebSocketServer;
import lombok.extern.log4j.Log4j2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.List;

// 使用@RestController注解将类标记为REST控制器，该类中的方法将返回数据而不是视图名称
@RestController
// @RequestMapping注解用于将HTTP请求映射到特定的处理器类或处理器方法上，这里定义了一个基本的请求路径
@RequestMapping("/api/websocket") // 修改为更具描述性的路径，以便明确这是处理WebSocket相关API的路径
@Log4j2 // 使用Log4j2进行日志记录
public class WebSocketController {

    // 使用@Autowired注解自动装配WebSocketServer的bean实例
    @Autowired
    private WebSocketServer webSocketServer;

    @Autowired
    private WebSockertService webSockertService;

    // @GetMapping是一个组合注解，是@RequestMapping(method = RequestMethod.GET)的快捷方式

    @PostMapping("/instartWarn")
    public R instartWarn(@RequestBody WarnData warnData){
        try {
//            插入数据库
            webSockertService.instartWarn(warnData);
            webSocketServer.sendInfo("警局收到消息", null);
        } catch (Exception e) {
            // 如果在发送消息过程中发生IO异常，则抛出运行时异常
            throw new RuntimeException(e);
        }
        return R.ok();
    }


    @GetMapping("/findLastWarn")
    public R findLastWarn(){
        List<WarnData> list=webSockertService.findLastWarn();
        return R.ok(list);
    }
}
